from django.shortcuts import render, redirect
from django.views import View
from goods.models import GoodsChannel
# from goods.models import SKU, SPU, SKUImage, SPUSpecification, SpecificationOption
# from goods.models import SKUSpecification, GoodsChannelGroup, Brand,GoodsCategory
from .models import ContentCategory, Content
from meiduo_mall.utils.categories import get_categories


class IndexView(View):
    def get(self, request):
        # 将以下代码封装成方法使用
        # 提供广告首页广告界面
        # # 需要寻找商品频道和分类
        # categories = {}
        # 为什么不用列表？
        # 用字典是为了方便以频道的方式添加第一类广告分类，列表也可以，需要添加额外的字段来处理。
        # group_id：所属频道：1-11的频道，sequence：所属用品,每个频道中的第一类广告分类需要排序，
        # 返回一个第一类广告分类的列表对象
        # channels = GoodsChannel.objects.all().order_by('group_id', 'sequence')
        # 遍历每个第一个类广告分类
        # for channel in channels:
        #     # 获取当前的频道
        #     group_id = channel.group_id
        #     # 判断频道列表中是否包含channel_group，如果没有则需要添加
        #     if group_id not in categories:
        #         # 将字典以元素形式赋值给categories这个字典。
        #         categories[group_id] = {'channels': [], 'sub_cats': []}
        #     # 返回第一级广告分类
        #     cat1 = channel.category
        #     categories[group_id]['channels'].append({
        #         'id': cat1.id,
        #         'name': cat1.name,
        #         'url': channel.url,
        #     })
        #     # 构建第二级，第三级广告分类
        #     for cat2 in cat1.subs.all():
        #         # cat的私有属性
        #         cat2.sub_cats =[]
        #         # 第三级广告分类
        #         for cat3 in cat2.subs.all():
        #             cat2.sub_cats.append(cat3)
        #         categories[group_id]['sub_cats'].append(cat2)

        # 调用模块的get_categories获取返回的分类数据
        categories = get_categories()
        # 广告数据
        contents = {}
        # 获取广告内容类型对象列表
        content_category = ContentCategory.objects.all()
        for cat in content_category:
            # 并且一个字典：键是cat.key 值是列表对象
            contents[cat.key] = cat.content_set.filter(status=True).order_by('sequence')
        # 渲染模板
        context = {
            "categories": categories,
            'contents': contents,
        }
        return render(request, 'index.html', context)
